題目:
給定兩個二進位數字字串 a
和 b
,將它們加起來並以二進位形式回傳他們的加總。
範例:
輸入: a = "11", b = "1"
輸出: "100"
模擬二進位運算加總,並且還要有進位的方式,
實作:
class Solution {
public:
string addBinary(string a, string b) {
int i = a.size()-1;
int j = b.size()-1;
int carry = 0;
string res;
while (i >= 0 || j >= 0) {
int sum = carry;
if (i >= 0) sum += a[i] == '1' ? 1 : 0;
if (j >= 0) sum += b[j] == '1' ? 1 : 0;
res += (sum % 2) + '0';
if (sum >= 2)
carry = 1;
else
carry = 0;
i--;
j--;
}
if (carry == 1) res += '1';
reverse(res.begin(), res.end());
return res;
}
};